# 这里都是函数尾调用
def myPow(self, x, n):
    if not n:
        return 1
    if n < 0:
        return 1 / self.myPow(x, -n)
    if n & 1:
        return x * self.myPow(x, n - 1) # 这里为什么 n - 1
    return self.myPow(x * x, n / 2) # 这里为什么 x * x


def myPow(self, x, n):
    if n < 0:
        x = 1 / x
        n = -n
    pow = 1
    while n:
        if n & 1:
            pow *= x
        x *= x
        n >>= 1
    return pow
